<html>
    <head>
        <!--[if IE]>
            <script src="excanvas.compiled.js">
            </script>
        <![endif]-->
        <style>
		    em { color: #888 }
            body {
			    background-color:#333;
				font-family: Helvetica, Arial, Helvetica Neue, Verdana, sans-serif; 
				font-size: 13px;
			}
            #a {
			    clear:both;
				float:center
			}
            .info {
			    color:#EED
			}
            input {
			    padding:12px
			}
            #level {
			    font-size:large;
				color:#EE8;
				padding-left:38px
			}
            .awesome, .awesome:visited {
                background: #222 url(images/alert-overlay.png) repeat-x; 
                display: inline-block; 
                padding: 5px 10px 6px; 
                color: #fff; 
                text-decoration: none;
                -moz-border-radius: 5px; 
                -webkit-border-radius: 5px;
                -moz-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
                -webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.5);
                text-shadow: 0 -1px 1px rgba(0,0,0,0.25);
                border-bottom: 1px solid rgba(0,0,0,0.25);
                cursor: pointer;
            }
            .awesome:hover {
			    background-color: #111; 
				color: #fff; 
			}
            .awesome:active {
			    top: 1px; 
			}
            .awesome, .awesome:visited {
			    font-size: 13px; 
				font-weight: bold; 
				line-height: 1; 
				text-shadow: 0 -1px 1px rgba(0,0,0,0.25);
			}
            .large.awesome, .large.awesome:visited {
                font-size: 14px; 
                padding: 8px 14px 9px; 
            }
        </style>
        <script src="../lib/hexerly.js">
        </script>
        <script>
        var scale, NUM_COLUMNS, NUM_ROWS, h, holding, colors, puzzleTiles, games, allGames;
        scale = 1.5;
        NUM_COLUMNS = 14; 
        NUM_ROWS = 10;
        allGames = {};
        colors = ['#F00','#FF0','#F0F','#0F0','#0FF','#00F']; //color of tile, based on # of neighbors
        holding = null; //holding is an index into puzzleTiles;
        gameNum = 0; //gameNum is an index into games. The 'level' shown to the user is gameNum + 1.

        games = [[1,1],
        [1,1,2],
        [2,2,2],
        [1,1,2,2],
        [1,2,2,3],
        [2,2,3,3],
        [1,1,1,3],
        [1,2,2,2,3],
        [1,2,3,3,3],
        [1,1,2,3,3],
        [1,2,2,3,4],
        [1,1,2,2,2],
        [1,1,1,2,3],
        [2,2,3,3,4],
        [2,2,3,3,4,4],
        [1,1,2,2,3,3],
        [2,2,3,3,3,5],
        [1,2,2,3,4,4],
        [1,1,2,2,2,2],
        [1,2,3,3,3,4],
        [1,1,3,3,3,3],
        [1,1,1,2,2,3],
        [1,1,2,3,3,4],
        [1,2,2,2,3,4],
        [1,2,2,3,3,3],
        [1,1,1,3,3,3],
        [1,2,2,2,2,3],
        [2,2,2,2,3,3],
        [1,2,3,3,3,4,4],
        [1,1,2,2,2,3,3],
        [1,1,1,2,3,3,3],
        [1,2,2,2,2,3,4],
        [1,1,2,2,2,2,2],
        [1,2,3,3,3,3,5],
        [1,2,2,3,3,3,4],
        [2,2,2,3,4,4,5],
        [1,1,2,2,3,3,4],
        [1,2,2,3,3,4,5],
        [1,1,1,1,2,3,3],
        [1,1,1,2,2,2,3],
        [1,2,2,3,4,4,4],
        [1,1,2,3,3,3,3],
        [1,2,2,2,3,4,4],
        [1,1,1,3,3,3,4],
        [1,2,2,2,2,3,4,4],
        [2,2,2,2,3,3,4,4],
        [2,2,2,2,3,3,3,3],
        [1,1,1,1,3,3,3,3],
        [1,1,2,2,3,3,3,3],
        [2,2,2,3,3,4,5,5],
        [2,2,3,3,3,3,4,4],
        [1,2,2,2,3,3,3,4],
        [1,1,1,2,2,3,3,3],
        [1,2,3,3,3,4,4,4],
        [1,1,2,2,2,2,3,3],
        [1,1,1,3,3,3,4,4],
        [1,2,2,3,3,3,4,4],
        [1,1,2,2,3,4,4,5],
        [1,1,2,2,3,3,4,4],
        [1,2,2,3,3,4,4,5],
        [1,1,1,2,2,3,4,4],
        [2,2,3,3,3,4,4,5],
        [1,1,1,2,3,3,3,4],
        [1,2,2,2,4,4,4,5],
        [1,1,1,1,2,2,3,3],
        [1,1,2,2,2,3,3,4],
        [1,1,2,2,3,3,3,3,4],
        [1,1,1,2,2,2,3,3,3],
        [1,2,2,2,3,3,3,4,4],
        [1,2,2,2,2,3,3,3,4],
        [1,1,2,2,3,3,4,4,4],
        [2,2,2,3,3,4,4,5,5],
        [1,1,2,2,3,3,3,4,5],
        [1,2,2,2,2,2,3,3,3],
        [1,2,2,2,3,4,4,4,4],
        [1,1,1,2,2,3,3,3,4],
        [1,1,2,2,2,3,4,4,5],
        [2,2,3,3,3,3,4,5,5],
        [1,1,2,2,2,2,3,3,4],
        [1,1,2,2,2,2,2,3,3],
        [1,2,2,2,3,3,4,4,5],
        [1,2,2,3,3,3,4,4,4],
        [1,2,2,3,3,3,3,4,5],
        [1,1,1,2,2,2,3,4,4],
        [1,1,2,3,3,3,4,4,5],
        [1,2,2,2,2,3,4,4,4],
        [1,1,1,2,2,2,2,2,3],
        [1,2,2,2,3,3,3,4,4,4],
        [1,1,1,1,2,2,2,2,3,3],
        [1,1,1,2,2,2,2,2,2,3],
        [1,1,1,2,2,2,3,3,3,4],
        [1,2,2,3,3,3,3,5,5,5],
        [2,2,2,2,2,3,3,3,3,4],
        [1,1,2,2,2,2,2,2,3,3],
        [1,2,3,3,3,3,4,4,5,6],
        [1,2,2,2,3,3,3,3,4,5],
        [1,2,3,3,3,3,4,4,4,5],
        [1,2,2,2,2,3,3,3,4,4],
        [1,1,1,2,2,2,2,3,3,3],
        [1,1,1,2,2,3,3,3,4,4],
        [2,2,2,2,3,3,4,4,5,5],
        [1,2,2,3,3,3,3,3,4,4],
        [2,2,3,3,3,3,4,4,4,4],
        [1,1,2,2,3,3,3,3,4,4],
        [2,2,2,2,3,3,3,3,4,4],
        [1,1,1,2,3,3,3,4,4,4],
        [1,1,2,2,2,3,3,3,4,5],
        [2,2,2,2,3,4,4,4,4,5],
        [1,2,2,2,3,3,4,4,4,5],
        [1,2,2,2,2,3,3,4,4,5],
        [1,1,1,2,2,3,3,3,3,3],
        [1,1,2,2,3,3,3,4,4,5],
        [2,2,2,2,2,2,3,3,3,3],
        [1,2,2,2,2,2,2,3,4,4,4],
        [1,1,2,2,3,3,4,4,4,5,5],
        [1,1,1,2,2,3,4,4,4,4,4],
        [1,2,2,2,2,2,3,3,4,4,5],
        [1,1,2,2,3,3,3,3,3,3,4],
        [1,1,2,2,2,3,3,3,4,4,5],
        [1,1,2,3,3,3,3,4,4,5,5],
        [1,1,1,2,2,3,3,3,4,4,4],
        [1,1,2,2,3,3,3,4,4,4,5],
        [1,1,2,2,2,2,3,3,4,4,4],
        [1,2,2,2,3,3,3,3,4,4,5],
        [1,2,2,2,2,3,3,3,4,5,5],
        [1,2,2,2,2,2,2,3,3,3,4],
        [1,1,1,2,2,2,2,3,4,4,4],
        [1,2,2,3,3,3,3,3,4,4,4],
        [2,2,2,3,3,3,3,4,4,4,6],
        [1,1,2,2,2,2,2,3,4,4,5],
        [1,1,2,2,2,3,3,4,4,5,5],
        [2,2,2,2,3,3,4,5,5,5,5],
        [1,1,1,2,2,2,2,2,3,3,3],
        [1,2,2,2,2,3,3,3,3,3,4],
        [1,1,2,2,2,2,3,4,4,4,5],
        [1,2,2,2,3,3,4,4,4,4,5],
        [1,1,1,1,2,2,2,2,2,3,3],
        [1,2,2,2,3,3,3,4,4,4,5,5],
        [1,1,2,2,2,2,3,3,4,4,5,5],
        [1,1,1,2,2,3,3,3,3,3,3,3],
        [1,1,2,2,2,3,3,4,4,4,5,5],
        [1,1,1,2,3,3,3,3,4,4,4,5],
        [1,2,2,3,3,3,3,3,3,4,4,5],
        [1,2,2,2,2,2,3,3,3,3,4,5],
        [1,2,2,2,2,3,3,3,4,4,5,5],
        [1,1,2,2,3,3,4,4,4,4,5,5],
        [1,1,1,2,2,3,3,3,4,4,5,5],
        [1,1,3,3,3,3,3,4,4,4,5,6],
        [1,2,2,2,3,3,3,3,3,4,5,5],
        [2,2,2,2,3,3,3,3,4,4,4,4],
        [1,1,1,2,3,3,3,4,4,4,4,6],
        [1,1,1,3,3,3,3,4,4,4,4,5],
        [1,1,1,2,3,3,3,3,3,4,5,5],
        [1,1,1,2,2,2,2,2,2,3,3,3],
        [1,1,2,2,2,3,3,4,4,4,4,4],
        [1,1,2,2,2,2,3,3,3,3,4,4],
        [1,2,2,2,3,3,3,4,5,5,5,5],
        [1,1,1,2,2,2,2,2,2,3,4,4],
        [1,1,1,2,2,3,3,3,3,3,4,4],
        [1,1,1,1,2,2,3,3,3,3,3,3],
        [1,1,2,2,2,2,3,3,3,4,4,5],
        [2,2,2,2,2,2,3,3,4,4,4,4],
        [1,1,2,2,2,2,2,2,3,3,3,3],
        [1,1,2,3,3,3,3,4,4,4,5,5],
        [1,2,2,3,3,3,4,4,4,5,5,6],
        [1,1,2,3,3,3,3,3,3,4,4,5,5],
        [1,1,2,2,2,2,3,3,3,3,4,4,4],
        [2,2,2,2,2,3,4,4,4,5,5,5,6],
        [1,1,2,2,2,2,2,3,3,3,3,4,4],
        [1,2,2,2,2,3,4,4,5,5,5,5,6],
        [1,2,2,2,3,3,3,3,3,4,4,4,4],
        [1,1,1,1,3,3,3,3,4,4,4,5,5],
        [1,1,2,2,2,3,3,3,3,4,4,5,5],
        [1,1,2,3,3,3,4,4,4,4,4,4,5],
        [1,1,1,2,3,3,3,3,3,3,3,4,4],
        [1,1,2,2,3,3,3,3,3,4,5,5,5],
        [1,1,2,3,3,3,3,3,4,4,5,5,5],
        [1,1,1,3,3,3,3,3,3,3,4,4,4],
        [1,2,2,2,2,2,3,3,3,4,4,4,4],
        [1,2,3,3,3,3,3,4,4,4,5,5,6],
        [1,1,2,2,3,3,3,3,3,4,4,4,5],
        [1,1,1,2,2,2,2,3,3,4,4,4,5],
        [1,1,3,3,3,3,3,3,4,4,5,5,6],
        [1,2,2,2,2,2,2,3,3,3,4,4,4],
        [1,2,2,2,2,3,4,4,4,4,5,5,6],
        [1,2,2,2,2,2,2,2,2,3,4,4,4],
        [1,2,2,2,2,2,2,3,3,3,3,3,4],
        [1,2,2,3,3,3,4,4,4,5,5,6,6],
        [1,1,3,3,3,3,3,4,4,4,4,4,5],
        [1,2,2,2,3,3,3,3,3,4,4,4,6],
        [1,2,2,2,2,3,3,3,3,4,5,5,5],
        [1,1,2,2,2,3,3,3,3,3,3,4,4],
        [1,1,1,2,2,2,3,3,3,3,3,4,4],
        [1,1,1,2,3,3,3,3,3,3,4,4,4,5],
        [2,2,2,2,2,3,3,3,3,3,4,5,5,5],
        [1,1,2,2,2,2,3,3,3,3,4,4,4,4],
        [1,1,2,2,2,2,2,3,3,3,4,4,4,5],
        [1,1,2,2,2,3,3,3,3,4,4,4,5,5],
        [1,1,2,2,2,3,3,3,3,3,3,4,4,4],
        [1,2,2,3,3,3,3,3,4,4,4,4,5,5],
        [1,1,1,2,2,2,2,3,3,3,3,3,4,4],
        [1,1,2,3,3,3,3,3,3,4,4,4,4,4],
        [1,1,2,3,3,3,3,3,3,3,4,4,4,5],
        [1,2,2,2,3,3,3,3,4,4,4,4,4,5],
        [1,1,2,2,3,3,3,3,3,4,4,4,4,5],
        [1,2,2,2,2,3,3,3,3,3,3,4,4,5],
        [1,2,2,3,3,3,3,3,3,4,4,4,5,6],
        [1,1,1,1,2,2,3,4,4,4,4,5,5,5],
        [1,2,2,2,2,3,3,3,4,4,4,5,5,6],
        [1,1,1,2,2,3,3,3,4,4,4,4,5,5],
        [1,2,2,2,2,3,3,3,3,3,4,5,5,6],
        [1,2,2,2,2,3,3,3,3,4,4,4,4,5],
        [1,1,1,2,2,2,2,3,4,4,4,4,5,5],
        [1,2,2,2,3,3,3,3,3,4,4,4,4,4],
        [2,2,2,2,3,3,3,4,4,4,4,5,5,5],
        [2,2,2,2,3,3,3,3,4,4,4,4,5,5],
        [1,1,1,2,2,2,3,3,4,4,4,5,5,5],
        [1,2,2,2,2,2,3,4,4,4,5,5,5,5],
        [1,1,1,2,2,2,3,3,3,3,4,4,4,5],
        [1,2,2,2,3,3,3,3,4,4,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,4,4,5,5,6],
        [2,2,2,3,3,3,3,3,3,4,5,5,5,5],
        [1,1,2,2,2,2,2,3,3,3,4,4,5,5,5],
        [1,1,2,2,2,3,3,3,3,3,4,4,4,4,5],
        [1,1,1,2,3,3,3,3,4,4,4,4,5,6,6],
        [2,2,2,2,2,3,3,3,3,4,4,4,4,5,5],
        [1,2,2,2,3,3,3,3,3,4,4,4,5,5,6],
        [1,2,3,3,3,3,3,3,4,4,4,5,5,5,6],
        [1,2,2,2,3,3,3,3,3,4,4,4,4,5,5],
        [1,2,2,2,3,3,3,3,3,4,4,5,5,5,5],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,4,4],
        [1,1,2,2,2,2,2,2,3,3,3,3,3,3,4],
        [1,2,3,3,3,3,3,3,3,3,4,4,4,5,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,4,4,4],
        [1,1,1,1,2,2,3,3,3,3,4,4,4,5,5],
        [1,1,1,2,2,3,3,3,4,4,4,4,5,5,6],
        [1,2,2,2,3,3,3,3,4,4,4,4,5,5,5],
        [1,1,1,1,2,2,3,3,4,4,4,4,4,5,5],
        [1,1,2,3,3,3,3,3,4,4,4,4,4,5,6],
        [1,2,2,2,2,2,3,3,3,3,4,4,4,4,5],
        [1,2,2,2,2,3,3,3,3,4,4,4,4,4,5],
        [1,1,2,2,2,2,3,3,3,3,4,4,5,5,6],
        [1,1,2,2,2,2,3,3,3,4,4,4,4,4,5],
        [1,1,2,2,2,3,3,3,3,3,4,4,5,5,5],
        [1,1,2,2,3,3,3,4,4,4,4,5,5,5,6],
        [2,2,2,2,3,3,4,4,4,4,5,5,5,5,6],
        [1,1,1,1,2,2,3,3,3,4,4,4,4,4,5],
        [1,1,2,2,3,3,3,3,3,4,4,4,5,5,5],
        [1,1,1,1,1,2,3,3,3,3,3,4,4,4,4],
        [1,1,2,2,2,3,3,3,4,4,4,4,4,4,5,6],
        [1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,5],
        [2,2,2,3,3,3,3,3,4,4,5,5,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,4,4,4,4,4],
        [1,2,2,2,3,3,3,3,4,4,4,4,4,4,4,5],
        [1,1,1,2,2,2,3,3,3,3,3,4,4,4,5,5],
        [1,1,2,2,3,3,3,3,3,4,4,4,4,5,5,5],
        [1,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4],
        [1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4],
        [1,1,2,2,2,3,3,3,3,4,4,5,5,5,5,6],
        [1,2,2,2,2,3,3,3,3,3,3,4,4,5,5,5],
        [2,2,2,2,2,2,3,3,3,4,5,5,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,3,4,4,4,5],
        [1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,5],
        [2,2,2,2,2,2,3,3,4,4,4,4,5,5,5,5],
        [1,2,2,2,3,3,3,3,3,4,4,4,5,5,5,5],
        [1,1,2,2,2,3,3,3,3,3,3,4,4,4,5,5],
        [1,2,2,2,2,2,3,3,3,3,4,4,5,5,5,6],
        [1,1,2,2,2,2,3,3,3,4,4,4,4,4,5,6],
        [1,1,1,2,2,2,2,3,4,4,4,4,4,4,5,5],
        [1,1,2,2,2,2,3,4,4,4,4,4,4,4,5,6],
        [1,2,2,2,3,3,3,4,4,4,4,4,4,4,5,5],
        [1,1,1,2,2,3,3,3,3,3,3,4,4,5,5,5],
        [1,1,2,2,3,3,3,4,4,4,4,4,4,4,5,6],
        [1,1,1,1,2,2,2,3,3,3,3,4,4,4,5,5],
        [1,2,2,2,2,3,3,4,4,4,4,5,5,5,6,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4],
        [1,2,2,2,3,3,3,3,3,3,4,5,5,5,5,5],
        [1,1,1,2,3,3,3,3,3,4,4,4,4,4,4,6],
        [1,2,3,3,3,3,4,4,4,4,4,4,4,5,6,6,6],
        [1,1,1,2,3,3,3,3,3,4,4,4,5,5,5,5,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,5,5],
        [1,2,2,3,3,3,3,3,4,4,4,5,5,5,5,6,6],
        [1,1,1,2,2,2,2,3,4,4,4,4,4,4,5,5,6],
        [1,2,2,2,2,2,2,2,2,2,3,3,3,4,4,4,4],
        [1,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,6],
        [1,1,2,2,2,3,3,4,4,4,4,4,5,5,5,5,6],
        [1,1,1,2,2,3,3,3,3,3,4,4,4,4,5,5,6],
        [1,2,2,2,3,3,3,3,4,4,5,5,5,5,5,6,6],
        [1,1,1,1,1,2,2,3,3,3,3,3,3,4,4,4,5],
        [1,1,2,2,3,3,3,3,3,4,4,4,5,5,5,5,5],
        [1,1,2,2,2,2,3,3,3,4,4,4,4,5,5,5,6],
        [1,1,2,2,2,2,3,3,3,3,3,4,4,4,5,5,5],
        [1,1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,5],
        [1,1,2,2,2,3,3,3,4,4,4,4,5,5,5,6,6],
        [1,1,1,1,2,2,2,2,3,3,3,4,4,4,4,4,5],
        [1,1,2,2,2,3,3,3,4,4,4,5,5,5,5,5,6],
        [1,1,1,1,1,2,2,2,3,3,3,3,3,4,4,4,4],
        [1,1,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4],
        [1,1,1,1,2,2,2,3,3,3,3,3,3,4,4,4,4],
        [1,1,1,2,2,2,2,2,2,3,3,3,3,3,4,4,4],
        [1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,4],
        [2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,6],
        [1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,5,5],
        [1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4],
        [1,1,1,2,2,2,3,3,3,3,4,4,4,4,5,5,5],
        [1,1,1,1,1,2,3,3,3,3,3,4,4,4,4,5,5],
        [1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5],
        [1,1,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5],
        [1,2,2,2,2,2,2,3,4,4,4,4,4,4,5,5,5,5],
        [1,1,1,1,2,2,2,3,4,4,4,4,4,4,5,5,5,6],
        [1,1,1,2,3,3,3,3,4,4,4,4,4,5,5,5,6,6],
        [1,1,1,2,2,3,3,3,3,3,4,5,5,5,5,5,5,6],
        [1,1,2,2,2,2,2,3,4,4,4,4,4,4,4,5,5,5],
        [2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,6,6],
        [1,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6],
        [1,1,1,1,2,2,2,3,3,3,3,4,4,5,5,5,5,6],
        [2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,6,6],
        [1,1,2,2,2,2,2,2,3,3,3,3,3,4,4,5,5,5],
        [1,1,1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,5],
        [1,1,2,2,2,2,2,2,3,4,4,4,4,4,4,5,5,5],
        [1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5],
        [1,1,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,6],
        [1,2,2,2,2,2,3,3,3,3,3,4,4,5,5,5,5,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5],
        [1,1,1,2,2,2,2,2,2,2,2,2,3,3,3,3,3,4],
        [1,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,6,6],
        [1,1,1,2,2,2,2,3,3,4,4,4,5,5,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4],
        [1,1,1,1,2,2,2,3,3,3,3,3,4,4,4,5,5,5],
        [1,1,1,2,2,2,3,3,3,3,4,4,4,5,5,5,5,5],
        [1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,5,5,6],
        [1,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5],
        [1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,4],
        [1,1,1,2,2,2,2,2,3,3,3,3,4,4,4,5,5,5],
        [1,1,2,2,2,2,2,3,3,3,3,4,4,5,5,5,5,6],
        [1,2,2,2,2,2,3,3,3,4,4,4,4,4,5,5,6,6],
        [2,2,2,2,2,3,3,4,4,4,4,4,4,4,4,4,5,5],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,5,5,5],
        [2,2,2,2,2,3,3,4,4,4,4,4,4,4,4,4,4,5,5],
        [1,1,2,2,2,2,3,3,3,3,3,4,4,5,5,5,5,5,6],
        [1,2,2,2,2,2,3,3,4,4,4,4,4,5,5,5,5,5,6],
        [1,2,2,2,2,3,3,3,3,3,4,4,4,5,5,5,5,5,5],
        [1,1,2,2,2,3,3,3,3,4,4,5,5,5,5,5,5,6,6],
        [1,1,1,1,2,2,2,2,2,2,3,3,3,3,4,5,5,5,5],
        [1,1,1,2,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5],
        [1,1,2,3,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6],
        [1,2,2,2,2,2,3,3,3,3,4,4,4,5,5,5,5,5,6],
        [2,2,2,2,2,2,2,3,3,3,4,4,4,4,4,4,5,5,5],
        [1,1,2,2,2,3,3,3,4,4,4,4,4,5,5,5,5,5,6],
        [1,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6],
        [1,1,1,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6],
        [1,1,1,2,2,3,3,3,3,4,4,4,4,5,5,5,6,6,6],
        [1,2,2,2,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5],
        [1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,5,5,5,5],
        [1,1,1,1,1,2,2,3,3,3,3,3,3,3,3,4,4,4,5],
        [1,1,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5],
        [1,1,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5],
        [1,1,1,2,2,2,3,3,3,3,3,3,3,3,3,4,4,5,5],
        [1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,6],
        [1,1,1,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4],
        [1,2,2,2,2,2,3,3,3,3,3,3,3,4,5,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5],
        [1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,4,5,5,5,5,5,5,6],
        [1,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5],
        [1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5],
        [1,1,2,2,2,2,2,3,3,3,4,4,4,4,4,5,5,5,5,5],
        [1,1,2,2,2,3,3,3,3,4,4,4,4,4,4,4,5,5,6,6],
        [1,1,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,6,6,6],
        [2,2,2,2,3,3,3,3,3,4,4,4,5,5,5,5,5,5,5,6],
        [2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5],
        [1,1,1,2,2,3,3,3,3,3,3,3,4,5,5,5,5,5,5,6],
        [1,1,1,1,2,2,2,3,3,3,3,3,3,4,4,4,5,5,5,5],
        [1,2,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,5,5],
        [1,2,2,2,3,3,3,4,4,4,4,4,4,4,5,5,5,5,6,6],
        [1,1,1,2,2,2,2,2,3,3,4,4,4,4,4,5,5,5,6,6],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5],
        [1,1,1,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4],
        [1,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,5,5],
        [1,1,1,2,2,3,3,3,3,4,4,4,4,4,5,5,5,6,6,6],
        [1,1,2,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,6,6],
        [1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,6,6],
        [1,1,1,2,2,3,3,3,3,3,4,4,4,4,4,4,4,5,5,6],
        [1,2,2,2,2,2,3,3,3,4,4,4,4,4,4,4,5,5,6,6],
        [1,2,2,2,2,2,2,2,2,3,3,4,4,4,4,5,5,5,5,5],
        [1,1,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6],
        [1,1,1,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5],
        [1,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,5,6],
        [1,2,2,2,2,2,2,3,3,3,4,4,4,4,4,5,5,5,5,6],
        [1,2,2,2,2,2,2,2,2,2,3,3,3,4,4,4,4,5,5,6],
        [1,2,2,2,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6],
        [2,2,2,2,2,2,3,3,3,3,3,4,4,4,5,5,5,5,5,6],
        [1,1,1,1,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5],
        [1,1,1,1,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5],
        [1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4],
        [1,1,2,2,2,2,3,3,3,3,3,4,4,5,5,5,5,5,6,6,6],
        [1,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5],
        [1,1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5],
        [1,1,1,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,6,6,6],
        [1,1,1,1,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,6,6],
        [1,1,1,2,2,2,2,2,3,3,3,4,4,4,4,5,5,5,5,6,6],
        [1,1,1,1,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,6,6],
        [1,1,1,1,2,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5,5],
        [1,1,1,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,6],
        [1,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5],
        [1,1,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,6],
        [1,1,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6],
        [1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,4,4,4,5,5,5],
        [2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,6,6],
        [1,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5],
        [1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5],
        [1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,5],
        [1,1,1,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5],
        [1,2,2,2,2,2,3,3,3,4,4,4,4,4,4,4,5,5,5,5,6],
        [1,1,1,1,2,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,6],
        [2,2,2,2,2,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5],
        [1,1,1,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6],
        [1,2,2,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5],
        [1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4],
        [1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,5,5,5],
        [1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5],
        [1,1,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5],
        [1,1,1,1,1,2,3,3,3,3,3,3,4,4,4,4,5,5,5,6,6],
        [1,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5],
        [1,2,2,2,3,3,3,3,3,3,4,4,4,5,5,5,5,5,6,6,6,6],
        [1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,6,6,6],
        [1,1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5],
        [1,1,1,2,2,2,2,2,2,3,3,4,4,4,4,4,4,4,4,5,6,6],
        [1,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,5,5,5,6],
        [1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,6],
        [1,2,2,2,2,2,3,3,3,4,4,4,4,4,5,5,5,5,5,5,6,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,6],
        [1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5],
        [1,1,2,3,3,3,3,3,3,3,3,3,3,4,4,5,5,5,5,6,6,6],
        [1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,6],
        [1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5],
        [1,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,6],
        [1,1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5],
        [1,1,1,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5],
        [1,1,1,1,2,2,2,2,2,2,2,2,2,3,3,4,4,4,5,5,5,5],
        [2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,6,6,6,6,6,6],
        [1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,5,5,5,5],
        [1,1,1,2,2,2,3,3,3,3,4,4,5,5,5,5,5,5,5,6,6,6],
        [1,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,6],
        [1,1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,6],
        [1,1,2,2,2,3,3,3,3,4,4,4,5,5,5,5,5,5,6,6,6,6],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,5,5],
        [1,2,3,3,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,6,6],
        [1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5],
        [1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,5,5,5,5,5,5,6],
        [1,1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5,5],
        [2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,6],
        [1,2,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,6],
        [1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,4,4,4,4,4,5],
        [1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5],
        [1,1,2,2,2,2,2,2,3,3,3,3,3,4,5,5,5,5,5,5,5,6,6],
        [1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5],
        [1,1,1,1,2,2,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,6,6],
        [1,1,1,2,2,2,3,3,3,3,3,4,4,5,5,5,5,5,5,5,5,6,6],
        [1,1,1,2,2,2,2,2,2,2,2,2,3,3,4,4,4,4,4,4,4,4,5],
        [1,1,1,1,1,1,2,2,2,3,3,3,3,3,3,3,3,3,3,3,4,4,5],
        [1,1,1,1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5,5,6],
        [1,2,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6],
        [1,1,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,5,6,6,6],
        [1,1,2,2,2,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,6,6,6],
        [1,1,1,2,2,2,2,2,2,3,3,4,4,4,4,4,5,5,5,5,5,6,6],
        [1,1,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,6,6],
        [1,1,2,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,5,5,6],
        [1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,6,6,6,6,6],
        [1,1,1,1,1,2,2,2,2,2,3,3,4,4,4,4,4,4,4,5,6,6,6],
        [1,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5],
        [1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,5,5,5,5,5,5,6],
        [1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,5,5,6],
        [1,1,1,1,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6],
        [1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,5,5,5,6,6],
        [1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,6],
        [1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5],
        [1,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,4,4,4,5,6,6,6],
        [1,1,1,2,2,2,2,3,3,3,4,4,4,4,4,4,4,5,5,5,5,6,6],
        [1,1,1,2,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6],
        [1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,4,5,5,5,5,5,6,6],
        [1,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5,6,6],
        [1,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6],
        [1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5],
        [1,1,2,2,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,4,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,3,3,3,3,4,4,4,4,5,5,5,5,6],
        [1,1,1,1,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5],
        [1,1,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,5],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5,5,6],
        [2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5,5,5,5,6],
        [1,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,6],
        [1,1,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,6,6],
        [1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,6],
        [1,2,2,2,2,3,3,3,4,4,4,4,4,4,4,5,5,5,5,5,5,6,6,6],
        [1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,4,4,5,5],
        [1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,4,6,6,6],
        [1,1,2,2,3,3,3,3,3,4,4,4,4,4,4,4,5,5,5,6,6,6,6,6],
        [2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5,6,6],
        [1,2,2,2,2,2,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,6,6,6],
        [1,1,1,1,1,2,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,6],
        [2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,5,6],
        [1,1,2,2,2,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,6,6,6],
        [1,1,1,1,1,2,2,2,2,3,3,3,3,3,4,4,4,4,4,4,4,4,4,6],
        [1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,5,5,5,5,5,5,5,6],
        [1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,5,5],
        [1,1,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5],
        [1,1,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,6],
        [1,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,4,5,5,5,5,5,5],
        [1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,4,4,4,4,4,5,5,6]];        
        
        function layoutGame(gameHexes, tileArray) {
            var i, locationDecided;
            puzzleTiles = [];
            for (i = 0; i < tileArray.length; i = i + 1) {
                locationFound = false;
                while (!locationFound) {                
                  column = Math.floor(Math.random() * NUM_COLUMNS)+2;
                  row = Math.floor(Math.random() * NUM_ROWS)+2;
                  if (i==0 || gameHexes[column][row].name  == undefined || gameHexes[column][row].name == null) {
                        gameHexes[column][row].name = i;
                        puzzleTiles[i] = [];
                        puzzleTiles[i][0] = column;
                        puzzleTiles[i][1] = row;
                        puzzleTiles[i][2] = tileArray[i];                    
                        locationFound = true;
                    }
                }
            }
        }                    
		//this is my brute force method of finding a new game to play
		function createGame(length) {
            var i, testHexes, column, row, resultArray;
            testHexes = [];
            resultArray = [];
            //start with an empty slate...
            for (column = 0; column < NUM_COLUMNS; column = column + 1) {
                testHexes[column] = [];
                for (row = 0; row < NUM_ROWS; row = row + 1) {
                    testHexes[column][row] = new Hex(column, row);
                }
            }
        
            //randomly 'set' (i.e. turn on) a bunch of tiles inside them... guaranteeing that each 'set' tile has at least 1 set neighbor.
            //(other than the first one we set)
            var locationFound;
            for (i = 0; i < length; i = i + 1) {
                locationFound = false;
                while (!locationFound) {                
                  column = Math.floor(Math.random() * NUM_COLUMNS);
                  row = Math.floor(Math.random() * NUM_ROWS);
                  //alert(countSetNeighbors(testHexes, column, row));
                  if (i==0 || (testHexes[column][row].set == undefined && countSetNeighbors(testHexes, column, row) > 0)) {
                    testHexes[column][row].set = true;
                    locationFound = true;
                  }
                }                
            }
            i = 0;
            for (column = 0; column < NUM_COLUMNS; column = column + 1) {
                for (row = 0; row < NUM_ROWS; row = row + 1) {
                    if (testHexes[column][row].set != undefined) {
                      resultArray[i] = countSetNeighbors(testHexes, column, row);
                      i ++;
                    }
                }
            }        
            return resultArray;
        }
            
        function Hex(column, row, name) {
            this.column = column;
            this.row = row;
            this.fillColor = "#CCC";
            this.name = name;
			this.win = false;
            this.draw = function(c) {
			    if (c == undefined) {
				  c = $('a').getContext("2d");
				}
                var xAndY, fillStyle;
                  xAndY = columnRowToXY(column, row); 
				  //xAndY[0] is the x-coord, xAndY[1] is the y-coord. 
				  //See... it contains x *and* y.
                
                if (this.name != undefined && this.name != null) {
					fillStyle = createGradient(c, xAndY[0], xAndY[1], colors[puzzleTiles[this.name][2]-1]);
                    drawHex(c, xAndY[0], xAndY[1], fillStyle,"#CCC");
                    shadowText(c,puzzleTiles[this.name][2], (xAndY[0] + 9)*scale, (xAndY[1] + 16.0)*scale);
					
					if (this.win === true) { 
                        drawHexBorder(c, xAndY[0]+0.5, xAndY[1]+0.5, ["#666","#666","#444","#444","#666","#666"]);
                        drawHexBorder(c, xAndY[0]-0.5, xAndY[1]-0.5, "#FFF");
                    }
					
                    if (this.name == holding) {
                      drawHexBorder(c, xAndY[0]+0.5, xAndY[1]+0.5, ["#444","#444","#222","#222","#444","#444"]);
                      drawHexBorder(c, xAndY[0]-0.5, xAndY[1]-0.5, "#888");
                    }
                } else {
				  fillStyle = createGradient(c, xAndY[0], xAndY[1], "#333");
                  drawHex(c, xAndY[0], xAndY[1], fillStyle,"#444");
                }
            };
            
            this.click = function(c) {
                if (holding == null && this.name == undefined) {
                  //clicked an empty tile while holding nothing.
                  //Nothing happens.
                  return;
                }
                if (holding != null && this.name == undefined) {
                  //clicked an empty tile while holding something.
                  
                  //Put down what we're holding.
                  this.name = holding;
                  
                  hexes[puzzleTiles[holding][0]][puzzleTiles[holding][1]].name = null;
                  hexes[puzzleTiles[holding][0]][puzzleTiles[holding][1]].draw(c);
                  
                  holding = null;
                  
                  puzzleTiles[this.name][0] = this.column;
                  puzzleTiles[this.name][1] = this.row;
                  this.draw(c);
                  sayIfWon(c);
                  return;
                }
                
                if (this.name != undefined) {
                  //clicked a non-empty tile while maybe holding something.
                  
				  //so we'll pick up what we clicked while putting down what was held.
				  var previousHeld = null;
                  grabbedName = this.name;
                  if (holding != null) {
                    //hexes[puzzleTiles[holding][0]][puzzleTiles[holding][1]].name = grabbedName;
					previousHeld = hexes[puzzleTiles[holding][0]][puzzleTiles[holding][1]];
					previousHeld.name = grabbedName;
                    //hexes[puzzleTiles[holding][0]][puzzleTiles[holding][1]].draw(c);
                    this.name = holding;                    
					holding = null;
					puzzleTiles[previousHeld.name][0] = previousHeld.column;
                    puzzleTiles[previousHeld.name][1] = previousHeld.row;
				 
                  } else {
                    holding = grabbedName;
                  }
                  puzzleTiles[this.name][0] = this.column;
                  puzzleTiles[this.name][1] = this.row;
				  if (previousHeld != null) previousHeld.draw(c);
                  this.draw(c);
                  sayIfWon(c);
                  return;
                }
            }
        }
        
        function shadowText(c, text, x, y) {
            //c.stroke();
            c.shadowBlur = 0; //test;
            c.fillStyle = "#555";
            c.font = "bold " + Math.floor(12 * scale) + "px sans-serif";
            c.fillText(text, x + (1.5 *scale), y + (1.5*scale));
            c.fillStyle = "#EEE";
            c.fillText(text, x, y);
        }
        
        function $(id) {
         return document.getElementById(id)
        }

        function next() {
            //alert(createGame(5));
            setScale(1.5);
            var c, column, row, xAndY;
            c = $('a').getContext("2d");
            hexes = [];
            c.fillStyle = "#333";
            c.fillRect(0,0,$("a").width,$("a").height);    
   
            for (column = 2; column < NUM_COLUMNS + 2; column = column + 1) {
                hexes[column] = [];
                for (row = 2; row < NUM_ROWS + 2; row = row + 1) {
                    hexes[column][row] = new Hex(column, row);
                    hexes[column][row].draw(c);
                }
            }
            /*
			//this is the code for generating a huge set of games.
            var gameList, it;
            for (i = 1; i < 25; i = i + 1) {
              for (it = 0; it < 30; it = it + 1) {
                gameList = createGame(i);
                allGames[gameList.sort()] = gameList;
              }
            }
            var text = '';
            for (game in allGames) {
              text = text + '[' + game + '],' + '<br />\r\n';
            }
            write(text);
            */
            
            canvas = $("a");
            if (gameNum==0) {
                canvas.addEventListener("click", function (e) {
                var columnAndRow = xyToColumnRow(e.clientX - canvas.offsetLeft + document.body.scrollLeft + document.documentElement.scrollLeft, 
                        e.clientY - canvas.offsetTop + document.body.scrollTop + document.documentElement.scrollTop);
                // columnAndRow[0] is the column number, columnAndRow[1] is the row number. 
				// See... it contains row *and* column.
                if (hexes[columnAndRow[0]] != undefined && hexes[columnAndRow[0]][columnAndRow[1]] != undefined)  {
                hexes[columnAndRow[0]][columnAndRow[1]].click(c);
                }
            }, false);
            }
	        gameNum = getGameNum();		
			$('next').href='#' + (gameNum + 2);
			level(gameNum + 1, games.length);
            layoutGame(hexes, games[gameNum]);
            var id;
            for (id = 0; id < puzzleTiles.length; id = id + 1) {
                addHex(c, puzzleTiles[id][0],puzzleTiles[id][1], id);
            }            

            gameNum += 1;
        }     
        function addHex(c,row,column,id) {
            hexes[row][column] = new Hex(row, column, id);
            hexes[row][column].draw(c);
        }
		function getGameNum() {
		    var state, parts = (window.location.href).split("#");
            if (gameNum == 0 && parts.length != undefined && parts.length === 2 && !isNaN(parts[1]) && parts[1] > 0)
            { 
                state = parts[1] - 1;        
            } else { 
		        state = gameNum;
	        }
			if (state >= games.length) {
			  state = 0;
			}
		    return state;
		}

    function say(c, text) {
        c.fillStyle = "#333";
        c.fillRect(25, 0, 100, 20)
        shadowText(c, text, 38, 14)  
    }
        
    function checkForWin() {
        var id, win, thisWin;
		var win = true;
        for (id = 0; id < puzzleTiles.length; id = id + 1) {
            if (puzzleTiles[id][2] != countNeighbors(puzzleTiles[id][0],puzzleTiles[id][1]))
            {   
			    thisWin = false;
			    win = false;
                
            } else {
			  
			   thisWin = true;
			}
			if (hexes[puzzleTiles[id][0]][puzzleTiles[id][1]].win != thisWin) {
			  hexes[puzzleTiles[id][0]][puzzleTiles[id][1]].win = thisWin;
			  hexes[puzzleTiles[id][0]][puzzleTiles[id][1]].draw();
			}
			
        }
        return win;    
    }

    function sayIfWon(c) {
        var winner = checkForWin();
        if (winner) {
            say(c, 'Solved!');
        } else {
		   say(c,'');
		}
    }                  
        
    function countNeighbors(column, row) {
        if (row == undefined) {
            //this is a mistake i make too often -- thinking i can pass a point to this function
            alert('getNeighbors requires a column and a row');
        }
        var shift;
        shift = column % 2; //in hex every second column is shifted
    
        count = 0;
        count += (isEmpty(column, row - 1) ? 0 : 1);
        count += (isEmpty(column + 1, row - 1 + shift) ? 0 : 1);
        count += (isEmpty(column + 1, row + shift) ? 0 : 1);
        count += (isEmpty(column, row + 1) ? 0 : 1);
        count += (isEmpty(column - 1, row + shift) ? 0 : 1);
        count += (isEmpty(column - 1, row - 1 + shift) ? 0 : 1);
        return count;
    }
    
    function countSetNeighbors(hexArray, column, row) {
        var shift;
        shift = column % 2; //in hex every second column is shifted
        count = 0;
        count += isSet(hexArray, column, row - 1);
        count += isSet(hexArray, column + 1, row - 1 + shift);
        count += isSet(hexArray, column + 1, row + shift);
        count += isSet(hexArray, column, row + 1);
        count += isSet(hexArray, column - 1, row + shift);
        count += isSet(hexArray, column - 1, row - 1 + shift);
    
        return count;
    }
    
    function getHex(column, row) {
        if (column >= 0 && row >= 0 && hexes[column] != undefined) {
            return hexes[column][row];
        }
        return null;
    }

    function isSet(hexArray, column, row) {
        if (column >= 0 && row >= 0 && hexArray[column] != undefined) {
            return (hexArray[column][row] != undefined && hexArray[column][row].set == true) ? 1 : 0;
        }
        return false;
    }

    function isEmpty(column, row) {
        if (column >= 0 && row >= 0 && hexes[column] != undefined) {
            return (hexes[column][row] == undefined || hexes[column][row].name == undefined);
        }
        return true;
    }

    function showNext() {
    }

    function level(text, max) {
        $('Level').innerHTML = "Level " + text + " of " + max;
    }
    
    function write(text) {
        $('notes').innerHTML = text;
    }
	
	function createGradient(c, x, y, fillColor) {
		var gradient = c.createLinearGradient((x + 7) * scale, (y) * scale, (x + 27) * scale, (y + 23) * scale);
		gradient.addColorStop(0.0, fillColor); 
		gradient.addColorStop(1.0, "#222"); 
		return gradient;
	}
	
    </script>
	<title>Puzzler: Hexagonal Puzzles</title>
    </head>
    <body onload='next()'>
        <center>
        <div style='width:500;float:center'>
        <a href='#1' id="next" class="large awesome" onclick='next();return false;' style='float:right'>next &raquo;</a>
        <span id='Level' class='info' style='float:left'>Level 1</span>
        
        <canvas id="a" width="500" height="415" style='width:500;height:415;clear:both;float:center;' >
        </canvas>
        </div>
        </center>
        
        <center>
        <p class='info'>Rearrange the colored tiles until they each have the<br />  same number of neighbors as the number written on them.</p>
        <p class='info'>Each level gets a little harder than the last.</p>
		
		<p class='info'><a href='index.html' class="large awesome">home</a> <em>Hexerly documentation, downloads and examples.</em></p>
        <span id='notes'></span>
		</center>
        
		
    </body>
</html>